home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / TP120692.ARJ / 12-06-92.TPC
Text File  |  1992-12-06  |  52KB  |  1,493 lines

  1.  
  2. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  3.  
  4. Conference 4
  5. Date       11-30-92 11:20:41
  6. From       Trevor Carlsen
  7. To         Scott Munger
  8. Subject    2 things
  9.  
  10.  
  11.  
  12.  SM>  Program read_Record;
  13.  SM> Type 
  14.  SM>       Myrec = Record
  15.  SM>               Firstname : String[36];
  16.  SM>               Lastname  : String[32];
  17.  SM>               SSN       : String[9];
  18.  SM>               Unused    : integer;
  19.  SM>        end;
  20.  
  21.  
  22.  SM> ... want to do is search for the record lastname and display
  23.  SM> it and thats all.  I want to start making utils for my bbs
  24.  SM> but without being able to read the records efficiently
  25.  SM> doesnt help.  Please help with source. The file can be
  26.  SM> 'file.dat'.
  27.  
  28. Firstly in the above example Lastname is not a record.  It is one of the fields
  29. in a record of type Myrec. I point out this seemingly trivial point as understan
  30. ing that point is fundamental to understanding how the routines you want work.
  31.  
  32. The following little program will read and display every  record in your file
  33. "file.dat". Then I include a second little program which will also change
  34. the first letter of the LastName variable in the 11th record to upper case.
  35.  I include that merely to demonstrate how to manipulate typed files.  No error
  36. handling is used (as it must be in a real-life program) and the routines are
  37. untested.
  38.  
  39. First Demo
  40.  
  41.  
  42. Type 
  43.       Myrec = Record
  44.               Firstname : String[36];
  45.               Lastname  : String[32];
  46.               SSN       : String[9];
  47.               Unused    : integer;
  48.        end;
  49.  
  50. var
  51.   f        : file of MyRec;
  52.   UserData : MyRec;
  53.  
  54. begin
  55.   assign(f,'file.dat');
  56.   reset(f);
  57.   while not eof(f) do begin
  58.     read(f,UserData);
  59.     writeln(UserData.LastName);
  60.   end;
  61.   close(f);
  62. end.
  63.  
  64.  
  65. Second Demo
  66.  
  67. Type 
  68.     Myrec = Record
  69.               Firstname : String[36];
  70.               Lastname  : String[32];
  71.               SSN       : String[9];
  72.               Unused    : integer;
  73.        end;
  74.  
  75. var
  76.   f        : file of MyRec;
  77.   UserData : MyRec;
  78.   RecNo    : longint;
  79.  
  80. procedure ReadRec(var R: MyRec; numb: longint);
  81.   begin
  82.     seek(f,numb);
  83.     read(f,R);
  84.   end;
  85.  
  86. procedure WriteRec(R: MyRec; numb: longint);
  87.   begin
  88.     seek(f,numb);
  89.     write(f,R);
  90.   end;
  91.  
  92. begin
  93.   assign(f,'file.dat');
  94.   reset(f);
  95.   RecNo := 0;
  96.   { To change record number 10 }
  97.   ReadRec(UserData,10);
  98.   UserData.LastName[1] := Upcase(UserData.LastName[1]);
  99.   Writerec(UserData,10);
  100.   close(f);
  101. end.
  102.  
  103.  
  104.  
  105.  
  106. --- TC-ED   v2.2ß  
  107.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  108.  * Tossed by SFToss/286 v1.02a on 92/12/02  09:56:29
  109.  
  110. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  111.  
  112. Conference 4
  113. Date       11-30-92 11:20:14
  114. From       Trevor Carlsen
  115. To         Robert Minneman
  116. Subject    Telegard Source
  117.  
  118.  
  119.  
  120.  RM> Dude! that's what *I* said, and I wrote a message back to
  121.  RM> this turkey (as well as someone else in this echo) but Mr.
  122.  RM> Sorber is talking out the side of his face, he hasn't proved
  123.  RM> squat about his claims, he just ignores any posts to him....
  124.  
  125. There is a very good reason why Sorber is not answering your posts to him
  126. - he has been warned by me (and by his sysop) that his access to the echo
  127. is at risk in the event of any further flames or off-topic messages from him
  128. in the echo.  He has obviously has enough good sense to realise that I don't
  129. make such threats in jest.
  130.  
  131. You have also been warned, both by netmail and here in the echo, on this but
  132. in contrast to Sorber have apparently chosen to ignore these warnings, and
  133. so this is a final public warning to you. The NEXT off-topic message, or message
  134. that should have been netmailed, from you in this echo will result in a request
  135. to your sysop for your access to this echo to be reduced to read-only. Failing
  136. that, the feed to your node will be cut.
  137.  
  138. If you wish to reply to this message do so ONLY BY NETMAIL.
  139.  
  140. Moderator.
  141.  
  142.  
  143. --- TC-ED   v2.2ß  
  144.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  145.  * Tossed by SFToss/286 v1.02a on 92/12/02  09:56:29
  146.  
  147. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  148.  
  149. Conference 4
  150. Date       11-30-92 11:19:54
  151. From       Trevor Carlsen
  152. To         All
  153. Subject    "ECHOCOP" netmail
  154.  
  155.  
  156.  
  157. By now many of you will have realised that I am running new software on my
  158. personal system.  (No.. it will NOT be made available publicly or to other
  159. moderators as yet.)  
  160.  
  161. I have modified my off-line reader to enable me to mark messages and keep
  162. statistics and details of those that do not conform to the regularly published
  163. echo guidelines.  On exit the reader automatically produces netmail messages
  164. to those concerned requesting that they mend their ways. (Some 50 or so messages
  165. have been despatched in this way over the past 25 days.) 
  166.  
  167. The end result for me is a very much easier way to maintain moderation of
  168. the echo and thus free up some valuable time. The down side is that some readers
  169. who perhaps were barely off-topic or whose "transgression" may have been ignored
  170. in the past because of its trivial nature may now be reminded of it without
  171. getting a quoted detail of just what message is being picked upon and they
  172. may have difficulty remembering just what it may have been.  
  173.  
  174. If you fall into that category please bear with me, I am working on that aspect
  175. of it.  In the mean time most recipients of automatically generated ECHOCOP
  176. messages will fully deserve their messages.  My aim is that borderline cases
  177. will not get a message until a certain number is reached.
  178.  
  179. Comments (and there have already been several - all favourable or semi-favourabl
  180. ) are welcome.  Please confine them to netmail ONLY.
  181.  
  182. Moderator.
  183.  
  184.  
  185. --- TC-ED   v2.2ß  
  186.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  187.  * Tossed by SFToss/286 v1.02a on 92/12/02  09:56:29
  188.  
  189. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  190.  
  191. Conference 4
  192. Date       11-30-92 11:29:39
  193. From       Trevor Carlsen
  194. To         All
  195. Subject    30/11/92 Contest
  196.  
  197.  
  198.  
  199. As promised I shall be making my "entry" available to all today in binary
  200. form only. However as my copy of BP7 has not arrived as Borland faithfully
  201. promised me three weeks ago, it will not be the version that is finally used
  202. although it will represent (for those interested) a good reference point. 
  203.  
  204.  
  205. The final version will be compiled as soon as I get my BP7 and made available
  206. then. It will incorporate only changes necessary for it to be recompiled so
  207. I anticipate that the differences is speed for benchmarking purposes will
  208. not be all that great.
  209.  
  210. TeeCee
  211.  
  212. --- TC-ED   v2.2ß  
  213.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  214.  * Tossed by SFToss/286 v1.02a on 92/12/02  09:56:29
  215.  
  216. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  217.  
  218. Conference 4
  219. Date       11-30-92 17:09:42
  220. From       Trevor Carlsen
  221. To         Sysop and All
  222. Subject    Guidelines for the Pascal echo.
  223.  
  224.  
  225.  
  226. Would all sysops please ensure that a copy of these guidelines is available to
  227.  
  228. all users of the Pascal echo.  It suggested that they be made a protected
  229. message to ensure that normal message area housekeeping does not not result
  230. in them being deleted.  I try to re-post these guidelines on the first day
  231. of every month.
  232.  
  233. GUIDELINES FOR THE PASCAL ECHO
  234.  
  235. The Pascal echo is an internationally distributed FidoNet echo devoted to
  236. the discussion and promotion of the Pascal programming language in all its
  237. variations.
  238.  
  239. MODERATOR.
  240.  
  241. The current moderator is Trevor Carlsen. He can be reached by
  242. Netmail at 3:690/644 or by normal postage by writing to -
  243.  
  244.   Trevor J Carlsen
  245.   Post Office Box 568
  246.   Port Hedland  Western Australia 6721
  247.   Phone (voice) +61 91 73-2026  (0001 UTS = 0801 Local)
  248.         (data)  +61 91 73-2930
  249.  
  250. GUIDELINES.
  251.  
  252.  1. Leave moderation to the moderator. Self appointed "echo policemen"
  253.     only waste echo space and create ill-feeling.
  254.  
  255.  2. NO FLAMING. If you feel that you have been insulted in some way by
  256.     somebody, you have three options.
  257.      (a) Complain by netmail to the person concerned.
  258.      (b) Bring the matter to the moderator's notice - again by netmail.
  259.      (c) Ignore it. (the preferred option!)
  260.  
  261.  3. Person-person messages that are not of general interest to other
  262.     users are STRICTLY not permitted. Netmail these types of messages.
  263.  
  264.  4. When replying to messages try and do so "off-line" and quote some of
  265.     the message being replied to. However don't go overboard with
  266.     quoting. Quote just enough to enable the context of the reply to be
  267.     fully understood and in particular DO NOT INCLUDE PARTS OF THE TEAR
  268.     AND ORIGIN LINES.
  269.  
  270.  5. When replying to questions with code examples, test them where
  271.     possible by compiling and running them (or state that you have not
  272.     done this). If possible always quote manual references, text
  273.     references etc.
  274.  
  275.  6. If replying to a question where you are disagreeing with the other
  276.     person's code or statement/s, support your viewpoint with working
  277.     code examples or valid text references. This will be more productive
  278.     than unsupported statements. If you are not prepared to do this then
  279.     don't reply in the first place!
  280.  
  281.  7. Do not ENTER or REPLY TO off-topic messages. The subject matter is
  282.     Pascal.  Discussions on religion, politics, copyright, other
  283.     languages and personal messages are OFF-TOPIC.  Any subject that is
  284.     illegal or undesirable in a responsible conference - eg discussion or
  285.     tips on producing viruses or how to illegally obtain access to
  286.     information that the user is unauthorised to obtain, is off-topic.
  287.  
  288.     Sometimes messages from other conferences become linked into another
  289.     conference due to faulty software. Replying to, or commenting on, such
  290.     messages is off-topic.
  291.  
  292.     The main point is to use common sense.  Some light hearted banter can
  293.     relieve the formality and brighten up ones day but do not carry this to
  294.     the length where it becomes an extended thread.  The object of the echo
  295.     is to help, get help and enjoy communicating with like-minded people.
  296.  
  297.  8. No "thank-you" or "no content" or "rubbish" messages. Sysops spend a
  298.     great deal of time and money to enable the distribution of echoes
  299.     such as this. Please respect this and avoid messages such as "Thank
  300.     you. Just what I needed" or "I agree" etc. By observing this
  301.     etiquette you will be helping to ensure greater participation in the
  302.     future.  If you miss a message or code for some reason, make your
  303.     own private arrangements to get it. Repeated postings of code are
  304.     expensive and unnecessary.
  305.  
  306.  9. All messages are to be in the English language and must be in PLAIN
  307.     TEXT.  No encryption of any kind is permissable as this is in direct
  308.     contravention of FidoNet policy. As the aim of the conference is to
  309.     help, discuss and demonstrate the Pascal language, no .OBJ, .EXE or
  310.     .COM files of any description are permitted REGARDLESS of how they
  311.     be constructed.  The echo is NOT to be regarded as a file transfer or
  312.     exchange channel.
  313.  
  314. 10. Limited, low key, on-topic advertising is permitted, provided that it
  315.     is authorised by the sysop of the originating BBS and by the
  316.     Moderator BEFORE it is posted here.
  317.  
  318. 11. When seeking assistance -
  319.     a)  If Turbo Pascal is your language, place the cursor on the key
  320.         word and call the on-line help (Ctrl-F1 in the IDE) to see if
  321.         the answer may be there.
  322.     b)  Double check the manual to see if the answer is there.
  323.     c)  When writing the message include enough code to allow would-be
  324.         helpers to have a chance to determine what the problem might be.
  325.         If possible condense the problem into a tiny working example and
  326.         post that.
  327.     d)  This is a high volume echo so use a subject line in the message
  328.         that is likely to gain attention from the experts who are often
  329.         too busy to read every message.  "Help wanted" or similar is a
  330.         good way to be ignored. Something like "Exec procedure not
  331.         working" is better.
  332.     e)  Remember that a reply of "RTFM" is not considered or meant as an
  333.         insult. In fact it is considered a polite (in spite of the
  334.         connotations) way of reminding someone that the answer they seek
  335.         is in the manual.
  336.     f)  Remember also that your reply may come from anyone, of possibly
  337.         unknown skill level.  Don't be too upset if misled as it is
  338.         probably unintentional and will almost certainly be corrected by
  339.         another reader.
  340.     g)  Many BBSs carry a file - FAQ.TXT (or similar) - which contains the
  341.         answers to frequently asked questions.
  342.     h)  The PDN has a file TCSEL*.ARJ that contains many useful routines
  343.         that your moderator has posted in the echo over the years. This
  344.         file also contains a file A2FAPQ.TXT which answers many commonly
  345.         asked questions.
  346.  
  347. 12. When offering advice or help -
  348.     a)  Do so in a helpful, polite manner.  Don't be condescending - not
  349.         everybody may have your experience or skills.
  350.     b)  Refer to the page in the manual where the answer is if your
  351.         answer is "RTFM"!
  352.  
  353. 13. Messages should comply with the FidoNet message requirements. Origin
  354.     lines should not exceed 79 characters, tear lines must not exceed 25
  355.     characters and messages should not contain extended "internet" style
  356.     signatures. No encrypted text is permitted. Messages must be <16K.
  357.  
  358. 14. All code posted should be public domain if possible.  No copyrighted
  359.     code may be posted unless the copyright owner included permission for
  360.     non-profit reproduction and use in the original code. Code posted
  361.     without copyright claim will be regarded as in the Public Domain.
  362.  
  363. 15. Election of Moderator.  Under a normal situation, if the moderator
  364.     wishes to step aside, s/he will appoint a new moderator taking into
  365.     account the wishes of the regular users where possible.  In the event
  366.     of a moderator ceasing to participate in the echo for a period of
  367.     three months without prior notice being given of the absence, for
  368.     whatever reason, then the ZEC (1:1/201) will conduct, or nominate a
  369.     regular and senior echo participant to conduct, an election for a new
  370.     moderator.
  371.  
  372.  
  373.  
  374. --- TC-ED   v2.2ß  
  375.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  376.  * Tossed by SFToss/286 v1.02a on 92/12/02  09:56:30
  377.  
  378. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  379.  
  380. Conference 4
  381. Date       11-30-92 16:54:19
  382. From       Trevor Carlsen
  383. To         All
  384. Subject    30/11/92 Contest
  385.  
  386.  
  387.  
  388.                                CONTEST
  389.  
  390. I am offering a cash prize of AUD100  (At this moment AUD1.00 = USD0.69) for
  391. the person who submits the program which sorts a large file of variable length
  392. mixed case strings in the least amount of time.  If the winning program can
  393. better the time a program I will write takes to do the job, I will double
  394. the prize!  The contest will be nul and void if less than 10 individuals enter
  395. by the closing date of April 30, 1993.
  396.  
  397. In the next message I will post a short Q&D program (MAKESTR) that will create
  398. the file to be sorted.  Be warned ... this program takes about 10 minutes
  399. to run on a fast 486.  I tried it on an old 286 and gave up after an hour,
  400. so be prepared for a long wait if  you are on an 8088!! Also disk space is
  401. needed as the file produced will be 17,504,847 bytes.  The file consists solely
  402. of string 3..30 characters in length in Turbo Pascal format. (length byte
  403. at position zero). The file has no lines and no characters other than the
  404. strings themselves and their length bytes.
  405.  
  406. PLEASE NOTE:  The original program MAKESTR has been changed to produce strings
  407.               of mixed case.  The sort must ignore case. I apologise for any
  408.               inconvenience this may have caused.
  409.  
  410. The data file is made up of 1,000,000 variable length mixed case strings.
  411. You can consider this to be the maximum number of strings to be handled. 
  412. No string will be less than 3 characters and none will exceed 30 characters.
  413. THE PROGRAM IS NOT TO CONTAIN ANY ASSEMBLER OR BASM CODE (except as may already
  414. be part of the standard library supplied by Borland) - just pure TP using
  415. standard Borland units and must be designed to run in STANDARD MEMORY - no
  416. extended, expanded or video memory may be used for the sorting (except as
  417. may be transparently used. eg your program has no control over its use). It
  418. must be capable of being run on a stock standard 640K 8088 machine which has
  419. no more than 30mbytes of free disk space after the creation of the original
  420. data file.
  421.  
  422. No disk direct sector reads/writes may be used by the program.
  423.  
  424. The program is to update a progress longint variable named "progress" that
  425. is located at absolute address $0040:$00f0 (the ICA area) at least once every
  426. 10 seconds. This can represent percentage completed or records sorted or whateve
  427.  you like, just as long as what the figure represents is indicated in the
  428. documentation.
  429.  
  430. The winner will be determined by me by being compiled and tested on my machine
  431. sorting the test file and will also be tested on a standard XT to ensure that
  432. it can run on such a machine.  However the winning time will be determined
  433. SOLELY by a comparison made on my machine. Before a final "run-off" is performed
  434. the hard drives will be defragmented and optimised to ensure a level playing
  435. field.
  436.  
  437. I will be adding the Turbo Power TPTimer unit to it to enable accurate timing
  438. to within 0.0001 seconds and a $1C ISR routine to enable me to track progress
  439. via the progress variable. I do not want the submitted program to contain
  440. code to do timing as this will be added by me.  No other changes will be made
  441. to the programs entered.
  442.  
  443. The code submitted must be compilable using TP6 or TP7 using standard Borland
  444. units and must be adequately commented or documented.
  445.  
  446. The data file must be PHYSICALLY in sorted alphabetical sequence after the
  447. program finishes and be in the same format  as the file created by the program
  448. MAKESTR. It must also an identical byte checksum to the file produced by my
  449. program (unless you can demonstrate that the file produced by my program is
  450. incorrect!!).  The case of a string is to be ignored in the sort. eg bAM will
  451. be before BAN but equal to BAM.
  452.  
  453. You may retain copyright on your code but any submission must be able to be
  454. freely copied and used in anything except a commercial program.
  455.  
  456. Entries are NOT to be placed in the echo but should be forwarded to me by
  457. normal mail, netmail or by crashing my node directly.
  458.  
  459. When I post the echo rules each month, I will repeat this message and give
  460. the number of entries received for the month with the fastest program received
  461. to that point plus any comments I feel appropriate.
  462.  
  463. The program I have written to act as the benchmark is now available from my
  464. node as ENTRY.EXE (about 8K bytes) and as soon afterwards as possible from
  465. PDN nodes. It has been PKLited using the commercial version of PKLite. The
  466. source code will be released April 30, 1993.
  467.  
  468. Trevor Carlsen
  469. PO Box 568
  470. Port Hedland 6721
  471. Western Australia
  472.  
  473.  
  474. --- TC-ED   v2.2ß  
  475.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  476.  * Tossed by SFToss/286 v1.02a on 92/12/02  09:56:30
  477.  
  478. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  479.  
  480. Conference 4
  481. Date       11-30-92 15:32:20
  482. From       Trevor Carlsen
  483. To         All
  484. Subject    30/11/92 MAKESTR and CHECK
  485.  
  486.  
  487.  
  488. program makestr;
  489.  
  490. { Written to produce the data file to be used in the contest. If you wish to 
  491.  
  492. alter this to speed it up - no problems. Just make sure that the basic 
  493. algorithm is unchanged so that the resulting file is an exact copy of the
  494. file produced by the code below.} 
  495.  
  496. uses crt;
  497.  
  498. var
  499.   st          : string;
  500.   len         : byte absolute st;
  501.   f           : file;
  502.   x,y         : longint;
  503.  
  504. function MakeRndStr: string;
  505.   var x : byte;
  506.       t : string;
  507.       sa: array[0..255] of byte absolute t;
  508.       l : byte absolute t;
  509.   begin
  510.     l := 3 + random(28);
  511.     for x := 1 to l do
  512.       sa[x] := 65 + random(26) + (random(2) shl 5);
  513.     MakeRndStr := t;
  514.   end;
  515.  
  516. begin
  517.   Clrscr;
  518.   assign(f,'d:\temp\string.dat'); { Change this to your chosen file name }
  519.   rewrite(f,1);
  520.   writeln('Strings created X 1000');
  521.   for x := 0 to 999 do begin
  522.     gotoXY(1,2); write(x:3);
  523.     for y := 1 to 1000 do begin
  524.       st := MakeRndStr;
  525.       BlockWrite(f,st,succ(len));
  526.     end;
  527.   end;
  528.   close(f);
  529. end.
  530.  
  531. {-------------------------------------------------------------------------}
  532. Here is the $1c ISR that I will add (unless you wish to do that).
  533.  
  534. unit Check;
  535.   
  536. interface
  537.  
  538. var
  539.   progress    : longint absolute $40:$f0;
  540.   tickCount   : longint;
  541.  
  542. implementation
  543. { Everything is private to this unit }
  544.  
  545. uses dos;
  546.  
  547. const
  548.   line          = 0;  { Change as required for position of display on screen }
  549.  
  550.   column        = 72;                               { Top left corner is 0,0 }
  551.  
  552.   ScreenPos     = (line * 160) + (column * 2);
  553.   Colour        = $1f;                                       { White on Blue }
  554.  
  555. type
  556.   timestr       = array[0..15] of char;
  557.   timeptr       = ^timestr;
  558. var
  559.   time          : timeptr;
  560.   OldInt1c      : pointer;
  561.   ExitSave      : pointer;
  562.  
  563. procedure Long2Hex(var numb; var Hex: TimeStr);
  564.   const
  565.     HexChars : array[0..15] of char = '0123456789ABCDEF';
  566.   var
  567.     HA : array[0..3] of byte absolute numb;
  568.   begin
  569.     FillChar(hex,16,Colour);
  570.     Hex[0] := HexChars[HA[3] shr  4];
  571.     Hex[2] := HexChars[HA[3] and 15];
  572.     Hex[4] := HexChars[HA[2] shr  4];
  573.     Hex[6] := HexChars[HA[2] and 15];
  574.     Hex[8] := HexChars[HA[1] shr  4];
  575.     Hex[10] := HexChars[HA[1] and 15];
  576.     Hex[12] := HexChars[HA[0] shr  4];
  577.     Hex[14] := HexChars[HA[0] and 15];
  578.   end; { Long2Hex }
  579.  
  580.  
  581. {$F+}
  582.  procedure Int1cISR; interrupt;
  583.   { This will be called every clock tick by hardware interrupt $08 }
  584.   var
  585.     x  : byte;
  586.   begin
  587.     asm cli end;
  588.     inc(tickcount);
  589.     if tickcount > 20 then { ticks to update the display } begin
  590.       tickcount   := 0;  { equality check and assignment faster than mod 9 }
  591.  
  592.       { The following statements are what actually display the on-screen time}
  593.       Long2Hex(progress,time^);
  594.     end;  { if count = 20 }
  595.     asm         
  596.       sti
  597.       pushf                                  { push flags to set up for IRET }
  598.  
  599.       call OldInt1c;                              { Call old ISR entry point }
  600.  
  601.     end;
  602.   end; { Int1cISR }
  603.  
  604. procedure ClockExitProc;
  605.   { This procedure is VERY important as you have hooked the timer interrupt  }
  606.  
  607.   { and therefore if this is omitted when the unit is terminated your        }
  608.  
  609.   { system will crash in an unpredictable and possibly damaging way.         }
  610.  
  611.   begin
  612.     ExitProc := ExitSave;
  613.     SetIntVec($1c,OldInt1c);               { This "unhooks" the timer vector }
  614.  
  615.   end;
  616. {$F-}
  617.  
  618. procedure Initialise;
  619.   var
  620.     mode : byte absolute $40:$49;
  621.   begin
  622.     progress := 0;
  623.     if mode = 7 then                                { must be a mono adaptor }
  624.  
  625.       time := ptr($b000,ScreenPos)
  626.     else                                       { colour adaptor of some kind }
  627.  
  628.       time := ptr($b800,ScreenPos);      
  629.     FillChar(time^,sizeof(time^),Colour);
  630.     tickCount := $ff;
  631.     GetIntVec($1c,OldInt1c);              { Get old timer vector and save it }
  632.  
  633.     ExitSave := ExitProc;                          { Save old exit procedure }
  634.  
  635.     ExitProc := @ClockExitProc;                 { Setup a new exit procedure }
  636.  
  637.     SetIntVec($1c,@Int1cISR);   { Hook the timer vector to the new procedure }
  638.  
  639.   end;  { Initialise }  
  640.   
  641. begin 
  642.   Initialise;
  643. end.
  644.  
  645. --- TC-ED   v2.2ß  
  646.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  647.  * Tossed by SFToss/286 v1.02a on 92/12/02  09:56:31
  648.  
  649. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  650.  
  651. Conference 4
  652. Date       11-30-92 17:07:30
  653. From       Trevor Carlsen
  654. To         All
  655. Subject    PDN Information.
  656.  
  657.  
  658.  
  659. The following text is posted monthly as a service to, and in support of, the
  660. PDNPASCL system.  The information contain was received from Janis Kracht in
  661. response to a request from me.  I strongly recommend that if you have any
  662. source code too long to post in one message ( >16K ) that you place it into
  663. the PDN system.
  664.  
  665. Moderator.
  666.  
  667. ===========================================================================
  668.  
  669. Programmers Distribution Network          11/14/92 Information File
  670. Janis Kracht, International Coordinator, Programmer's Distribution Network
  671. 1:272/38
  672.  
  673. Information regarding releasing files into the the PDNPASCL (PDN Pascal) file
  674. echo:
  675.  
  676. 1.  Files of interest to programmers may be hatched into the PDN. "Files" are
  677.  
  678. refered to as Units, Source code, include files, or Executables in the Pascal
  679. language, for instance.  I would also ask that the author (or authorized agent)p
  680. ease make sure that the file being entered into the PDN be documented, and 
  681.  
  682. functional. "CrippleWare" or "VaporWare" should not be submitted.
  683.  
  684.              ONLY PUBLIC DOMAIN AND SHAREWARE SHOULD BE SUBMITTED.
  685.  
  686.     Demonstration software submitted will be allowed only if the software is
  687.  
  688. able to be used in some fashion that will enable the end user to "Try before
  689. you buy".  An example in the Pascal language is a Unit with no source code
  690. which allows an end user to see first hand the power of the library.  Editors 
  691.  
  692. that are designed around programming are encouraged to be submitted as well,
  693. aslong as they meet the above criteria.
  694.  
  695. 2.  Any and all nodes may directly hatch submissions into the PDN.
  696. Any Node that abuses this will be removed from the PDN.  Files from authors
  697. may also be dropped off at 1:272/38, or uploaded to my BBS with a file 
  698. description and a 'request to hatch' and I will hatch them.
  699.  
  700. 3.   No archive advertisments should be placed into the archive. The PDN is
  701. notmeant to advertise a BBS, but to move files.
  702.  
  703. 4.   File which are hatched from my system will be converted to ARJ and will
  704. be stamped with an ARJ security lock to insure file integrity.
  705.  
  706. Information File:  PDNINFO.ARJ
  707.                    File REQuestable from 1:272/38, complete
  708.                    policy/link/application info for the Programmer's
  709.                    Distribution Network membership.
  710.  
  711. BBS List        :  PDNBBS.LST
  712.                    File REQusetable from 1:272/28, An
  713.                    international list of PDN Member BBS's
  714.                    which allow first time downloads, freq's, etc.
  715.                    of PDN Areas.
  716.  
  717. If you would like to join the Programmer's Distribution Network, netmail me
  718. at 1:272/38 and I will be glad to find you a feed 'close to home'.
  719.  
  720. Janis Kracht
  721. IC Programmer's Distribution Network, 1:272/38
  722. ===================================================
  723.  
  724.  
  725. --- TC-ED   v2.2ß  
  726.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  727.  * Tossed by SFToss/286 v1.02a on 92/12/02  09:56:31
  728.  
  729. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  730.  
  731. Conference 4
  732. Date       11-30-92 17:29:23
  733. From       Dj Murdoch
  734. To         Richard Nelson
  735. Subject    Re: Borland Pascal?
  736.  
  737.   RN> You use the Help|Files menu command to bring up a dialog 
  738.  RN> box that lets you add or remove files.  The IDE 
  739.  RN> automatically merges the indexes of the help files, so you 
  740.  RN> can do Ctrl-F1 searches on items in the help files you add.
  741.  
  742. No, the thing I missed was the help compiler.  I don't see any way to create
  743. my own .TPH files.  Am I still missing something?  
  744.  
  745. --- Msg V3.2
  746.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  747.  * Tossed by SFToss/286 v1.02a on 92/12/03  08:05:20
  748.  
  749. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  750.  
  751. Conference 4
  752. Date       11-30-92 17:56:30
  753. From       Dj Murdoch
  754. To         Mathias Homann
  755. Subject    Re: Question about BP 7
  756.  
  757.   MH> is it possible to install the Windows - IDE in another subdir than the
  758.  MH> DOS-IDE ???
  759.  
  760. The only restriction I can see is that the .TPL file has to be in the same
  761. directory as the compiler.  If you're compiling real mode DOS programs from
  762. Windows sometimes and from DOS sometimes, you'll probably have to have two
  763. copies of the library.  It's not a big deal; you can take all the units out
  764. and put them in your units directory if you're very short of space.
  765.  
  766. --- Msg V3.2
  767.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  768.  * Tossed by SFToss/286 v1.02a on 92/12/03  08:05:20
  769.  
  770. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  771.  
  772. Conference 4
  773. Date       11-30-92 17:59:28
  774. From       Dj Murdoch
  775. To         Bill Buchanan
  776. Subject    Re: TP 6.0 bug fix
  777.  
  778.   BB> I recently downloaded the fix for TP 6.0 to fix the screw up on fast
  779.  BB> 386's (particularly the 40Mhz)...however I have an IDE drive and I
  780.  BB> noticed the fix used DEBUG.  I was told that DEBUG will electronically
  781.  BB> crash an IDE drive.  This means I won't be able to reformat, I will have
  782.  BB> to send it back to the factory.  I heard this from a very reliable
  783.  BB> source and if this is true does anyone know where I can get another fix
  784.  BB> besides the one that uses DEBUG?
  785.  
  786. I've used DEBUG on a machine with an IDE drive with no ill effects.  I think
  787. it's true that DEBUG allows you to do things that can cause permanent damage
  788. to your IDE drive; so does TP, for that matter.
  789.  
  790. --- Msg V3.2
  791.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  792.  * Tossed by SFToss/286 v1.02a on 92/12/03  08:05:20
  793.  
  794. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  795.  
  796. Conference 4
  797. Date       11-30-92 18:01:36
  798. From       Dj Murdoch
  799. To         Greg Vigneault
  800. Subject    Re: LONGINT SHIFT BUG
  801.  
  802.   GV>  Is this confirmed to not work on a 386DX?  I tested Borland's
  803.  GV>  assembly algorithm: it works fine on my 386SX, so I wonder if
  804.  GV>  the problem only exists for '486 systems?
  805.  
  806. I've only tested it on a 486.  The 386 programmer's manual says that the result
  807. of "shrd ax,dx,cl" is undefined if cl>=16, but that doesn't mean that Intel
  808. didn't fix it in some versions of the chip.  
  809.  
  810. DM> cs:07A8 803E4C0002     cmp    byte ptr [SYSTEM.TEST8086],02
  811.  
  812.  GV>  I don't have TP7, so can you (or someone) tell me what the
  813.  GV>  SYSTEM.TEST8086 will be for the various CPU types ?
  814.  
  815. The manual says:
  816.  
  817.   0 = 8086
  818.   1 = 80286
  819.   2 = 80386 or later
  820.  
  821. I'd guess that this means an 8088 is 0, but I don't know enough about the
  822. test to tell you what it would say if presented with an 8018x or a NEC V20
  823. or V30.
  824.  
  825. --- Msg V3.2
  826.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  827.  * Tossed by SFToss/286 v1.02a on 92/12/03  08:05:20
  828.  
  829. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  830.  
  831. Conference 4
  832. Date       12-01-92 07:37:10
  833. From       Trevor Carlsen
  834. To         Shelby Crane
  835. Subject    Waiting...
  836.  
  837.  
  838.  
  839.  SC> Could someone post some example code of a program that will
  840.  SC> contine to update a object on the screen, such as a clock,
  841.  SC> but at the same time wait for a key press?
  842.  
  843. Find a PDN node near you and get TCSEL*.arj.  It has an ISR demo in it that
  844. will do what you want.
  845.  
  846. TeeCee
  847.  
  848. --- TC-ED   v2.2ß  
  849.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  850.  * Tossed by SFToss/286 v1.02a on 92/12/03  08:05:36
  851.  
  852. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  853.  
  854. Conference 4
  855. Date       12-01-92 07:57:24
  856. From       Trevor Carlsen
  857. To         Shelby Crane
  858. Subject    Hot Key...
  859.  
  860.  
  861.  
  862.  SC> Does anyone have an example program of a small TSR or
  863.  SC> whatever that will, for example, print Hi on the screen when
  864.  SC> ever Alt-G is hit?
  865.  
  866. Look up the keep procedure in your on-line help. The example there will be
  867. a good help.  However the double @@ in the GetIntVec line must be changed
  868. to just a single @.
  869.  
  870. TeeCee
  871.  
  872. --- TC-ED   v2.2ß  
  873.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  874.  * Tossed by SFToss/286 v1.02a on 92/12/03  08:05:36
  875.  
  876. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  877.  
  878. Conference 4
  879. Date       12-01-92 08:15:34
  880. From       Trevor Carlsen
  881. To         Aaron Marasco
  882. Subject    Fading routines...
  883.  
  884.  
  885.  
  886.  AM>  N SCRIPT.COM  
  887.  AM>  E 0100 E9 34 01 0D 0A 44 45 42 55 47 53 43 52 20 31 2E  
  888.  
  889. Debug scripts are not permitted in this echo.  Send them privately on your
  890. own dollar.  UUENCODEd messages are also not permitted here.  If you want
  891. a binary file get it privately, the echo resources are not to be used for
  892. that purpose.
  893.  
  894. Moderator.
  895.  
  896. --- TC-ED   v2.2ß  
  897.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  898.  * Tossed by SFToss/286 v1.02a on 92/12/03  08:05:36
  899.  
  900. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  901.  
  902. Conference 4
  903. Date       12-01-92 09:43:57
  904. From       Trevor Carlsen
  905. To         Jeff Jernegan
  906. Subject    Writing new date on file
  907.  
  908.  
  909.  
  910.  JJ> Can anyone suggest how to change the date on a file in TP? I
  911.  JJ> need to change the filedates of a large number of small text
  912.  JJ> filesto the
  913.  
  914. Check out the SetFTime procedure in your manual.
  915.  
  916. TeeCee
  917.  
  918. --- TC-ED   v2.2ß  
  919.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  920.  * Tossed by SFToss/286 v1.02a on 92/12/03  08:05:36
  921.  
  922. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  923.  
  924. Conference 4
  925. Date       12-01-92 10:00:34
  926. From       Trevor Carlsen
  927. To         Bill Yohman
  928. Subject    self config
  929.  
  930.  
  931.  
  932.  BY> I know that youy can use binobj to add a file to a pascal
  933.  BY> exe. What I would like to do is make a program that saves
  934.  BY> its config inside of the exe. How would I do this?
  935.  
  936. An example of how to do this is included in the file TCSEL*.ARJ available
  937. on PDN nodes.
  938.  
  939. TeeCee
  940.  
  941. --- TC-ED   v2.2ß  
  942.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  943.  * Tossed by SFToss/286 v1.02a on 92/12/03  08:05:36
  944.  
  945. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  946.  
  947. Conference 4
  948. Date       12-01-92 10:13:18
  949. From       Trevor Carlsen
  950. To         Gregory P. Smith
  951. Subject    Reset and ReWrite TP6.0 Style?
  952.  
  953.  
  954.  
  955.  
  956.  TC> Seek cannot be used on text files.  Append can only be used
  957.  TC> on text files.
  958.  
  959.  GS> Hmm..  Darn. :) This does present a problem then.  I've
  960.  GS> never dealt with rewriting a record in the middle of a file,
  961.  GS> but how would you have to do it?  Does it require playing
  962.  GS> with the FileMode variable and using reset to open it or am
  963.  GS> I just overlooking something simple?
  964.  
  965. Open it as a typed file. This automatically allows you to read or write anywhere
  966. within the file to the record of your choosing.  eg.
  967.  
  968. type
  969.   YourRecord = record
  970.                  FirstName,
  971.                  LastName   : string[20]
  972.                  age        : word;
  973.                end;
  974. var
  975.   f       : file of YourRecord;
  976.   data    : YourRecord;
  977.   RecNo   : longint;
  978.  
  979. begin
  980.   assign(f,'YourFile.dat');
  981.   reset(f);  { opens for reading or writing }
  982.   seek(f,10); { seeks to the 11th record }
  983.   read(f,data); { Places the 11th record into the record "data" }
  984.   data.FirstName := 'Gregory'; { changes a field in that record }
  985.   seek(f,10); { seeks to the 11th record again so we can write to it }
  986.               { This is necessary because when we read the record the }
  987.               { file pointer is automatically advanced by one record and }
  988.               { therefore we have to seek back before doing the write }
  989.               { otherwise we would be overwriting the 12th record }
  990.   write(f,data);
  991.   close(f);
  992. end.
  993.  
  994. Untested.
  995.  
  996. TeeCee
  997.  
  998. --- TC-ED   v2.2ß  
  999.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1000.  * Tossed by SFToss/286 v1.02a on 92/12/03  08:05:36
  1001.  
  1002. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1003.  
  1004. Conference 4
  1005. Date       12-01-92 17:26:03
  1006. From       Trevor Carlsen
  1007. To         All
  1008. Subject    TP7/BP7 shr/shl bug
  1009.  
  1010.  
  1011.  
  1012. The shr/shl bug reported earlier this week applies to any shift exceeding $10.
  1013.  
  1014.  
  1015. Here is a patch supplied to me by Borland Australia.  It involves changing
  1016. the LONG.ASM file in the RTL and reassembling it.
  1017.  
  1018. ; Longint shift right
  1019. ; In    DX:AX = Value
  1020. ;       CX    = Shift count
  1021. ; Out   DX:AX = Result
  1022.  
  1023. LongShr:
  1024.  
  1025.         CMP     Test8086,2
  1026.         JB      @@1
  1027.     .386
  1028. ;       SHRD    AX,DX,CL  
  1029. ;       SHR     DX,CL        
  1030. ;
  1031. ;       Bug Fix for 32 bit SHR > 16 bits
  1032. ;       R Morris & J Downs Borland International (Sydney Australia)
  1033.  
  1034.         SHL     EAX, 16
  1035.         MOV     AX, DX
  1036.         ROR     EAX, 16
  1037.         SHR     EAX, CL
  1038.         ROR     EAX, 16
  1039.         MOV     DX, AX
  1040.         SHR     EAX, 16
  1041.         RETF
  1042.  
  1043. And then for the shl....
  1044.  
  1045.  
  1046. And then for the shl.....
  1047.  
  1048.  
  1049. LongShl:
  1050.  
  1051.         CMP     Test8086,2
  1052.         JB      @@1
  1053.     .386
  1054. ;       SHLD    DX,AX,CL
  1055. ;       SHL     AX,CL
  1056. ;
  1057. ;       Bug Fix for 32 bit SHR > 16 bits
  1058. ;       R Morris & J Downs Borland International (Sydney Australia)
  1059.  
  1060.         SHL     EAX, 16
  1061.         MOV     AX, DX
  1062.         ROR     EAX, 16
  1063.         SHL     EAX, CL
  1064.         ROR     EAX, 16
  1065.         MOV     DX, AX
  1066.         SHR     EAX, 16
  1067.         RETF
  1068.  
  1069. TeeCee
  1070.  
  1071. --- TC-ED   v2.2ß  
  1072.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1073.  * Tossed by SFToss/286 v1.02a on 92/12/03  08:05:36
  1074.  
  1075. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1076.  
  1077. Conference 4
  1078. Date       12-01-92 08:21:28
  1079. From       Dj Murdoch
  1080. To         Mark May
  1081. Subject    Re: Array of Pointers
  1082.  
  1083.   DM> One advantage:  if every now and then you have one that's 100
  1084.  DM> bytes long, it won't cause any trouble.   If people who wrote
  1085.  DM> message editors used NewStr, we wouldn't have all these brain
  1086.  DM> damaged programs that truncate subject lines to 30 or 
  1087.  MM> 40 characters :-).
  1088.  
  1089.  MM> Actually this usually isn't the cause of that problem.  
  1090.  MM> Some of the offline mail formats specify a limit on the 
  1091.  MM> length of the subject, so the message editor programs 
  1092.  MM> don't have a choice if they want to remain compatible.
  1093.  
  1094. Okay, so it's not the editor that's brain-damaged, it's the offline reader.
  1095.  
  1096. --- Msg V3.2
  1097.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  1098.  * Tossed by SFToss/286 v1.02a on 92/12/04  20:13:23
  1099.  
  1100. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1101.  
  1102. Conference 4
  1103. Date       12-01-92 08:24:51
  1104. From       Dj Murdoch
  1105. To         Reinhardt Mueller
  1106. Subject    Re: Borland Pascal 7.0!!!
  1107.  
  1108.   RM> If you use the car analogy, it won't work.  It's like the old and
  1109.  RM> new car having the same title.  If this were possible, you couldn't
  1110.  RM> sell/give-away one without doing same with the other.  If the cars go,
  1111.  RM> the title goes with them.  If it were legal for two cars to
  1112.  RM> have one title, you'd have to keep both -- you can't separate them.
  1113.  
  1114.  RM> Borland treats those various versions like the same copy.  All the
  1115.  RM> versions of a given program are on the same license.
  1116.  
  1117.  RM> I have copies of TP3, TP4, TP5, TP5.5, and soon BP7.0
  1118.  RM> I bought TP3 new.  I upgraded to TP4 and all of the rest.
  1119.  RM> Meaning:  I can't legally sell any lest I sell ALL my copies of TP!
  1120.  
  1121. That's total nonsense.  I've bought all of those (most as upgrades), and in
  1122. no case did Borland ever place any condition on what I did with old copies.
  1123.  If Borland doesn't make it a condition of sale at the time of sale, they
  1124. can't impose it later. 
  1125.  
  1126. Please quote whatever it was in the Borland license that gave you this mistaken
  1127. impression.
  1128.  
  1129. --- Msg V3.2
  1130.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  1131.  * Tossed by SFToss/286 v1.02a on 92/12/04  20:13:23
  1132.  
  1133. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1134.  
  1135. Conference 4
  1136. Date       12-01-92 08:35:15
  1137. From       Dj Murdoch
  1138. To         Douglas Delonay
  1139. Subject    Re: BP7 protected mode
  1140.  
  1141.   DD>   According to the manuals and such the run time manager 
  1142.  DD> is supposed to grab ALL available memory and allocate it 
  1143.  DD> to the program as heap space. 
  1144.  
  1145. I couldn't find that statement, but just before the discussion of the RTM
  1146. environment variable there are a few vague statements that suggest only extended
  1147. memory will be used for the heap; you need GlobalDOSAlloc to get low ram.
  1148.  
  1149.  
  1150. --- Msg V3.2
  1151.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  1152.  * Tossed by SFToss/286 v1.02a on 92/12/04  20:13:23
  1153.  
  1154. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1155.  
  1156. Conference 4
  1157. Date       12-01-92 20:07:18
  1158. From       Dj Murdoch
  1159. To         Joe Jared
  1160. Subject    Re: .OVR files...Assembler...when?
  1161.  
  1162.   JJ>      It's generally not a workable option to overlay 
  1163.  JJ> assembler source, and even if it was possible, is not 
  1164.  JJ> practical.  
  1165.  
  1166. What difference does it make which source language you use?  As long as you
  1167. obey the convention of using far calls and setting up a proper stack frame,
  1168. the TP overlay manager (and I'd guess any other one) doesn't care that the
  1169. code is assembler rather than Pascal that's being overlaid.
  1170.  
  1171.  
  1172. --- Msg V3.2
  1173.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  1174.  * Tossed by SFToss/286 v1.02a on 92/12/04  20:13:23
  1175.  
  1176. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1177.  
  1178. Conference 4
  1179. Date       12-01-92 21:13:55
  1180. From       Dj Murdoch
  1181. To         All
  1182. Subject    BP 7 Outline bug
  1183.  
  1184.  The DisposeNode procedure in the Outline unit neglects to dispose of the Text
  1185. string allocated by NewNode.  This means that disposing of a POutline object
  1186. leaves all the strings sitting in memory.  It's also got redundant tests to
  1187. avoid disposing of a nil pointer.
  1188.  
  1189. It should be fixed as follows.  Change from:
  1190.  
  1191.  procedure DisposeNode(Node: PNode);
  1192.  begin
  1193.   if Node <> nil then
  1194.     with Node^ do
  1195.     begin
  1196.       if ChildList <> nil then DisposeNode(ChildList);
  1197.       if Next <> nil then DisposeNode(Next);
  1198.     end;
  1199.   Dispose(Node);
  1200.  
  1201. to:
  1202.  
  1203.  procedure DisposeNode(Node: PNode);
  1204.  begin
  1205.   if Node <> nil then
  1206.     with Node^ do
  1207.     begin
  1208.       DisposeNode(ChildList);
  1209.       DisposeNode(Next);
  1210.       DisposeStr(Text);
  1211.       Dispose(Node);
  1212.     end;
  1213.  end; 
  1214.  
  1215. This is my fix, not a Borland fix.  
  1216.  
  1217. --- Msg V3.2
  1218.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  1219.  * Tossed by SFToss/286 v1.02a on 92/12/04  20:13:23
  1220.  
  1221. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1222.  
  1223. Conference 4
  1224. Date       12-02-92 08:17:55
  1225. From       Dj Murdoch
  1226. To         Greg Vigneault
  1227. Subject    Re: LONGINT SHIFT BUG
  1228.  
  1229.   GV>  From a 1986 copy of Intel's "80386 Programmer's Reference Manual,"
  1230.  GV>  re the SHLD and SHRD commands ...
  1231.  
  1232.  GV>     "The count operand is provided by either an immediate byte or the
  1233.  GV>     contents of the CL register.  These operands are taken MODULO 32
  1234.  GV>     to provide a number between 0 and 31 by which to shift.  Because
  1235.  GV>     the bits to shift are provided by the specified register, the
  1236.  GV>     operation is useful for multi-precision shifts (64 bits or more)."
  1237.  
  1238. The restriction isn't in the text, it's in the pseudocode description of what
  1239. the instruction does:
  1240.  
  1241.   IF ShiftAmt = 0 
  1242.   THEN no operation
  1243.   ELSE
  1244.     IF ShiftAmt >= OperandSize
  1245.     THEN (* Bad parameters *)
  1246.       r/m <- UNDEFINED
  1247.       CF, OF, SF, ZF, AF, PF <- UNDEFINED
  1248.     ELSE ...
  1249.  
  1250. The problem is that OperandSize is 16 when the RTL uses this instruction.
  1251.  
  1252. This pseudocode is the same in the 386 and 486 manuals; I don't think there's
  1253. any difference in what the two chips are supposed to do here.  Whatever happens
  1254. in the UNDEFINED sections may differ, of course.
  1255.  
  1256.  GV>  The exact same words are found in the 1989 edition of Intel's "386
  1257.  GV>  SX Microprocessor Programmer's Reference Manual."  No mention of
  1258.  GV>  lower limits on register CL.
  1259.  
  1260. It's not a lower limit on CL, but an upper limit on CL mod 32.
  1261.  
  1262.  
  1263.  
  1264. --- Msg V3.2
  1265.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  1266.  * Tossed by SFToss/286 v1.02a on 92/12/05  10:15:56
  1267.  
  1268. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1269.  
  1270. Conference 4
  1271. Date       12-02-92 08:24:00
  1272. From       Dj Murdoch
  1273. To         Greg Vigneault
  1274. Subject    Re: LONGINT SHIFT BUG
  1275.  
  1276.   GV>  from TP users.  At the risk of being flamed for posting a 'binary'
  1277.  GV>  file in this echo (just 22 lines,TeeCee)... the following TP code
  1278.  GV>  generates SHR31.COM.  
  1279.  
  1280.  GV>  PROGRAM A {DO.PAS}; VAR G:File; CONST V:ARRAY [ 1..387 ] OF BYTE =(
  1281.  GV> 233,216,0,10,67,80,85,58,32,36,10,110,111,116,32,51,50,45,98,105,116,
  1282.   ..
  1283.  
  1284. I think you really missed the point here.  The reason you shouldn't post binarie
  1285.  is because they're completely unreadable to most people.  Why didn't you
  1286. just post the assembler source for your program?  I suspect from your descriptio
  1287.  that this program tests the wrong thing, but it's way too much work to download
  1288.  compile to create a .COM, disassemble the .COM to figure out what you really
  1289. did.  Sorry, I just don't have the time.
  1290.  
  1291. --- Msg V3.2
  1292.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  1293.  * Tossed by SFToss/286 v1.02a on 92/12/05  10:15:56
  1294.  
  1295. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1296.  
  1297. Conference 4
  1298. Date       12-02-92 08:28:25
  1299. From       Dj Murdoch
  1300. To         Andrew Evers
  1301. Subject    Re: Borland Pascal 7.0 and XT's
  1302.  
  1303.   AE> Does Borland Pascal 7.0 still include the TP7 IDE's and 
  1304.  AE> compilers, can I still use parts of BP7 eg. DOS real mode 
  1305.  AE> compiler on an XT?
  1306.  
  1307. Yes, but why?  TP 7 is a lot cheaper.
  1308.  
  1309. --- Msg V3.2
  1310.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  1311.  * Tossed by SFToss/286 v1.02a on 92/12/05  10:15:56
  1312.  
  1313. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1314.  
  1315. Conference 4
  1316. Date       12-02-92 08:29:42
  1317. From       Dj Murdoch
  1318. To         Trevor Carlsen
  1319. Subject    Re: TP7/BP7 shr/shl bug
  1320.  
  1321.   TC> The shr/shl bug reported earlier this week applies to any 
  1322.  TC> shift exceeding $10.
  1323.  
  1324.  TC> Here is a patch supplied to me by Borland Australia.  It 
  1325.  TC> involves changing the LONG.ASM file in the RTL and reassembling it.
  1326.  
  1327.  TC> ;       Bug Fix for 32 bit SHR > 16 bits
  1328.  TC> ;       R Morris & J Downs Borland International (Sydney Australia)
  1329.  
  1330.  TC>         SHL     EAX, 16
  1331.  TC>         MOV     AX, DX
  1332.  TC>         ROR     EAX, 16
  1333.  TC>         SHR     EAX, CL
  1334.  TC>         ROR     EAX, 16
  1335.  TC>         MOV     DX, AX
  1336.  TC>         SHR     EAX, 16
  1337.  TC>         RETF
  1338.  
  1339. Morten Welinder sent me one that looks a bit faster:
  1340.  
  1341.  
  1342. @@shr:  shl     edx,10h         ; (dx:ax) shr (cl and 31)
  1343.         mov     dx,ax           ; edx now holds operand
  1344.         shr     edx,cl          ; Change this to shl for SHL
  1345.         mov     ax,dx
  1346.         shr     edx,10h
  1347.         ret
  1348.  
  1349. Morten Welinder terra@diku.dk
  1350.  
  1351.  
  1352.  
  1353.  
  1354. --- Msg V3.2
  1355.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  1356.  * Tossed by SFToss/286 v1.02a on 92/12/05  10:15:56
  1357.  
  1358. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1359.  
  1360. Conference 4
  1361. Date       12-01-92 23:06:00
  1362. From       Terry Hughes
  1363. To         Greg Williams
  1364. Subject    AsyncPro upgrades
  1365.  
  1366.  
  1367. GW>Hi Terry,
  1368.  
  1369. GW>        Just wondering if the Fossil-based driver/layer for
  1370. GW>AsyncPro (apparently circulated on the bonus disk with
  1371. GW>AsyncPro) will be sent to me with my upgrade (which is from
  1372. GW>version 1.01 to version 1.10)?  If not, is there any way
  1373. GW>for me to get hold of it, as I'm interested in using a
  1374. GW>fossil rather than hardware directly...?  Thanks.
  1375.  
  1376. Version 1.10 includes the complete new FOSSIL and Digiboard device
  1377. layers so you'll have everthing you need once you get 1.10. If
  1378. you're in a real hurry, I've also put those device drivers on our BBS
  1379. (719-260-9726, FOSSIL.LZH and DIGI14.LZH).
  1380.  
  1381. -Terry
  1382. ___
  1383.  X QMPro 1.0 41-2187 X TurboPower Software (voice 719-260-9726)
  1384.  
  1385. --- Maximus 2.01wb
  1386.  * Origin: The Programmers Playhouse (1:128/60)
  1387.  * Tossed by SFToss/286 v1.02a on 92/12/05  10:16:02
  1388.  
  1389. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1390.  
  1391. Conference 4
  1392. Date       12-03-92 20:52:49
  1393. From       Trevor Carlsen
  1394. To         Terry Ebaugh
  1395. Subject    Help!
  1396.  
  1397.  
  1398.  
  1399.  TE> I'm having problems getting the hang of binary files...
  1400.  
  1401. There is nothing wrong with the way you are handling the binary files.  What
  1402. you are doing wrong is the looping.
  1403.  
  1404.  TE>        for  i:=1 to maxplayer do begin  <<<<<<-- add this begin
  1405.  TE>        with stats[i] do begin 
  1406.  TE>             name[i]:=' '; 
  1407.  TE>             handle[i]:=' '; 
  1408.  TE>             i:=i+1;   {<<<<<<< - WHY?? }
  1409.  TE>         end; { with } 
  1410.  TE>        write (playerrec, stats) 
  1411.  TE>        end; { for }
  1412.  TE>        close(playerrec); 
  1413.  
  1414. Never tamper with the value of a loop variable within a for loop. It can be
  1415. done but is exceedingly poor practice and the problems it can create is illustra
  1416. ed above.
  1417.  
  1418.  
  1419. TeeCee
  1420.  
  1421.  
  1422. --- TC-ED   v2.2ß  
  1423.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1424.  * Tossed by SFToss/286 v1.02a on 92/12/05  10:16:08
  1425.  
  1426. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1427.  
  1428. Conference 4
  1429. Date       12-03-92 21:09:39
  1430. From       Trevor Carlsen
  1431. To         Jonas Oberg
  1432. Subject    PullTTT5
  1433.  
  1434.  
  1435.  
  1436.  JO> Why doesn't the following code work?
  1437.  
  1438.  JO> Procedure Help(var chm:char;top,sub:integer); far;
  1439.  JO> Begin                                        {^^^ Add this }
  1440.  JO>      {$F+}  {<<<<<<<<<<< Delete these }
  1441.             |
  1442.  JO>      {$F-}
  1443.  JO> End;
  1444.  
  1445. OR wrap the procedure in the F+ directives. Do not place them inside the procedu
  1446. e.
  1447.  
  1448. TeeCee
  1449.  
  1450. --- TC-ED   v2.2ß  
  1451.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1452.  * Tossed by SFToss/286 v1.02a on 92/12/05  10:16:08
  1453.  
  1454. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1455.  
  1456. Conference 4
  1457. Date       12-03-92 20:52:00
  1458. From       TREVOR CARLSEN
  1459. To         TERRY EBAUGH
  1460. Subject    Help!
  1461.  
  1462.   TE> I'm having problems getting the hang of binary files...
  1463.  
  1464. There is nothing wrong with the way you are handling the binary files.  What 
  1465.  
  1466. you are doing wrong is the looping.
  1467.  
  1468.  TE>        for  i:=1 to maxplayer do begin  <<<<<<-- add this begin
  1469.  TE>        with stats[i] do begin 
  1470.  TE>             name[i]:=' '; 
  1471.  TE>             handle[i]:=' '; 
  1472.  TE>             i:=i+1;   {<<<<<<< - WHY?? }
  1473.  TE>         end; { with } 
  1474.  TE>        write (playerrec, stats) 
  1475.  TE>        end; { for }
  1476.  TE>        close(playerrec); 
  1477.  
  1478. Never tamper with the value of a loop variable within a for loop. It can be 
  1479.  
  1480. done but is exceedingly poor practice and the problems it can create is 
  1481. illustrated above.
  1482.  
  1483.  
  1484. TeeCee
  1485.  
  1486.  
  1487. --- TC-ED   v2.2ß  
  1488.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1489. 
  1490. --- Mosaic v1.00
  1491.  * Origin: The Board Walk * (205)281-7733 * HST/DS * (1:375/5) *
  1492.  * Tossed by SFToss/286 v1.02a on 92/12/05  10:17:21
  1493.